{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# VenPy Basic Usage"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here we will show the basic usage of VenPy. This short tutorial will cover:\n",
    "\n",
    " 1. Installing the package\n",
    " 2. Loading compiled Vensim models\n",
    " 3. Setting and getting model constants\n",
    " 5. Running models and retrieving results\n",
    " 4. 'Replacing' model components with Python functions\n",
    " 6. Working with subscripted variables\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## 1. Installing VenPy"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " * VenPy can be installed from source at the project [home page](https://github.com/pbreach/venpy) by first downloading the source files clicking \"Download Zip\", or by cloning the project to your local machine.\n",
    " \n",
    " * After the files have been downloaded they can be extracted. From here, navigate to the project directory via `$ cd /path/to/directory`. \n",
    " After navigating to the directory we can run the setup script by \n",
    " `$ python setup.py install`\n",
    " * The package will now be installed to your default version of Python which needs to be Windows 32-bit for it to work with Vensim 32-bit. If your default Python is not Windows 32-bit the command `$ python setup.py` can be modified to point to the 32-bit version by instead using `$ /path/to/32bit/python.exe setup.py install`\n",
    " \n",
    " Now you should hopefully be able to: "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import venpy"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. Loading Vensim Models"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The Vensim DLL allows you to load in *compiled* Vensim models with the .vpm extension. This can be obtained by [publishing](https://www.vensim.com/documentation/index.html?usr19_saving_to_a_binary_file.htm) the Vensim model that needs to be loaded. Here we will be using the `simple.vpm` model in the `examples` directory. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![Alt Text](https://github.com/pbreach/venpy/blob/master/models/simple.png?raw=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "model = venpy.load('../models/simple.vpm')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "After the model has been loaded we can get some information of the names and types of model variables through the `vtype` attribute:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'.Control': 'group',\n",
       " '.simple': 'group',\n",
       " 'Characteristic Time': 'constant',\n",
       " 'FINAL TIME': 'constant',\n",
       " 'INITIAL TIME': 'constant',\n",
       " 'Outflow': 'game',\n",
       " 'SAVEPER': 'aux',\n",
       " 'Stock': 'level',\n",
       " 'TIME STEP': 'constant',\n",
       " 'Time': 'time_base'}"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.vtype"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. Setting and Getting Model Constants"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "One of the main features associated with using the Vensim DLL is the ability to retrieve and set model constants prior to simulation. This will help to facilitate batch processing of models for various types of sensitivity analyses.\n",
    "\n",
    "This functionality is incorporated in VenPy through the `__setitem__` and `__getitem__` methods, and can be used as follows:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Characteristic Time is initially 5\n",
      "Characteristic Time is now 20\n"
     ]
    }
   ],
   "source": [
    "current = model['Characteristic Time']\n",
    "print(\"Characteristic Time is initially %d\" % current)\n",
    "\n",
    "model['Characteristic Time'] = 20\n",
    "print(\"Characteristic Time is now %d\" % model['Characteristic Time'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that if the Vensim variable is *not* a model constant, and is accessed in any way *outside* of a simulation an error will be thrown. The reason being that Vensim does not hold other variable types in memory. However, we can get around this by running a GAME simulation which will be discussed in Section 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "KeyError",
     "evalue": "\"Cannot get 'level' outside simulation.\"",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-7-5907a46d7140>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Stock'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32mC:\\Users\\Patrick\\Anaconda3 (32-bit)\\lib\\site-packages\\venpy\\venpy.py\u001b[0m in \u001b[0;36m__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m    109\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    110\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 111\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getval\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    112\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    113\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mC:\\Users\\Patrick\\Anaconda3 (32-bit)\\lib\\site-packages\\venpy\\venpy.py\u001b[0m in \u001b[0;36m_getval\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m    318\u001b[0m         \u001b[1;32melif\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalue\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;33m-\u001b[0m\u001b[1;36m1.298074214633707e33\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    319\u001b[0m             \u001b[0mvtype\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvtype\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 320\u001b[1;33m             \u001b[1;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Cannot get '%s' outside simulation.\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0mvtype\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    321\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    322\u001b[0m         \u001b[1;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalue\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mKeyError\u001b[0m: \"Cannot get 'level' outside simulation.\""
     ]
    }
   ],
   "source": [
    "print(model['Stock'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. Running Models and Retrieving Results"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "After a model has been loaded, it can be run by using the `run` method, which will tell Vensim to run the loaded model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "model.run()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "By default, VenPy will use the name `Run` to label the run, as well as the resulting output file `Run.vdf`. We can change this by passing a string as the `runname` argument to the `run method`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "model.run(runname='First Run')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This will create an output file in the same directory as the compiled Vensim model labelled, `First Run.vdf`. This output file can be used to view the results in Vensim, but if we want to run a model multiple times and process the data further, we can retrieve the results as a pandas `DataFrame`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Outflow</th>\n",
       "      <th>SAVEPER</th>\n",
       "      <th>Stock</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>20.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.950000</td>\n",
       "      <td>1</td>\n",
       "      <td>19.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.902500</td>\n",
       "      <td>1</td>\n",
       "      <td>18.049999</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.857375</td>\n",
       "      <td>1</td>\n",
       "      <td>17.147499</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.814506</td>\n",
       "      <td>1</td>\n",
       "      <td>16.290125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.773781</td>\n",
       "      <td>1</td>\n",
       "      <td>15.475618</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.735092</td>\n",
       "      <td>1</td>\n",
       "      <td>14.701838</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.698337</td>\n",
       "      <td>1</td>\n",
       "      <td>13.966745</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0.663420</td>\n",
       "      <td>1</td>\n",
       "      <td>13.268408</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0.630249</td>\n",
       "      <td>1</td>\n",
       "      <td>12.604987</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>0.598737</td>\n",
       "      <td>1</td>\n",
       "      <td>11.974738</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     Outflow  SAVEPER      Stock\n",
       "0   1.000000        1  20.000000\n",
       "1   0.950000        1  19.000000\n",
       "2   0.902500        1  18.049999\n",
       "3   0.857375        1  17.147499\n",
       "4   0.814506        1  16.290125\n",
       "5   0.773781        1  15.475618\n",
       "6   0.735092        1  14.701838\n",
       "7   0.698337        1  13.966745\n",
       "8   0.663420        1  13.268408\n",
       "9   0.630249        1  12.604987\n",
       "10  0.598737        1  11.974738"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.result()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "By default, this will retrieve all model variables that are of type `Level`, `Auxiliary`, or `Game`. For finer control we can specify the variable names that we want by passing a list of variable names to the `result` method through the `names` keyword argument."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Stock</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>20.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>19.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>18.049999</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>17.147499</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>16.290125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>15.475618</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>14.701838</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>13.966745</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>13.268408</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>12.604987</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>11.974738</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Stock\n",
       "0   20.000000\n",
       "1   19.000000\n",
       "2   18.049999\n",
       "3   17.147499\n",
       "4   16.290125\n",
       "5   15.475618\n",
       "6   14.701838\n",
       "7   13.966745\n",
       "8   13.268408\n",
       "9   12.604987\n",
       "10  11.974738"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.result(names=['Stock'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5. 'Replacing' Model Components"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Vensim offers a [large selection of functions](https://www.vensim.com/documentation/index.html?22300.htm) to be used in Vensim equations. However, in some cases there may be a particular analysis that requires some type of functionality not present in the Vensim simulation software. These could include (but are not limited to):\n",
    "\n",
    " * Genetic optimization algorithms\n",
    " * Specialized statistical models\n",
    " * Machine learning\n",
    " * Ability to interact with external modeling programs\n",
    " \n",
    "Luckily, Python has many built-in features and third-party projects (such as this one) that can do these things really well."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To take advantage of this, we can 'replace' a specific Vensim model component by diverting input and output to and from a Python function during a Vensim 'Gaming' simulation. The function must be defined with no arguments, and return a valid input to the target model variable. **Target variable must set as an Auxiliary variable with subtype Game to set during Gaming simulation!** "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this case we will replicate the Vensim equation with an equivalent Python function, as well as print out the current model time."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def outflow():\n",
    "    print(model['Time'])\n",
    "    return model['Stock'] / model['Characteristic Time']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can set this function to the target variable `Outlow`, effectively 'replacing' this component with the Python function `outflow` that we've defined"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "model['Outflow'] = outflow"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, if we run the model you'll see that the same output is obtained as before with the Vensim equation, and we also see that the current model time is being printed at every time step that the function is run."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0\n",
      "1.0\n",
      "2.0\n",
      "3.0\n",
      "4.0\n",
      "5.0\n",
      "6.0\n",
      "7.0\n",
      "8.0\n",
      "9.0\n"
     ]
    }
   ],
   "source": [
    "model.run()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Outflow</th>\n",
       "      <th>SAVEPER</th>\n",
       "      <th>Stock</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>20.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.950000</td>\n",
       "      <td>1</td>\n",
       "      <td>19.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.902500</td>\n",
       "      <td>1</td>\n",
       "      <td>18.049999</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.857375</td>\n",
       "      <td>1</td>\n",
       "      <td>17.147499</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.814506</td>\n",
       "      <td>1</td>\n",
       "      <td>16.290125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.773781</td>\n",
       "      <td>1</td>\n",
       "      <td>15.475618</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.735092</td>\n",
       "      <td>1</td>\n",
       "      <td>14.701838</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.698337</td>\n",
       "      <td>1</td>\n",
       "      <td>13.966745</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0.663420</td>\n",
       "      <td>1</td>\n",
       "      <td>13.268408</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0.630249</td>\n",
       "      <td>1</td>\n",
       "      <td>12.604987</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>0.630249</td>\n",
       "      <td>1</td>\n",
       "      <td>11.974738</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     Outflow  SAVEPER      Stock\n",
       "0   1.000000        1  20.000000\n",
       "1   0.950000        1  19.000000\n",
       "2   0.902500        1  18.049999\n",
       "3   0.857375        1  17.147499\n",
       "4   0.814506        1  16.290125\n",
       "5   0.773781        1  15.475618\n",
       "6   0.735092        1  14.701838\n",
       "7   0.698337        1  13.966745\n",
       "8   0.663420        1  13.268408\n",
       "9   0.630249        1  12.604987\n",
       "10  0.630249        1  11.974738"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.result()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that when were only able to get and set model *constants* outside of the simulation previously but now we are interacting with a `Stock`. When a callable object (such as a function) is set to a model variable, VenPy knows to run the simulation as a `GAME` where interaction with other variable types is allowed in Vensim. **This will cause the model to run at a slower rate compared to when only constants are set prior to simulation.** \n",
    "\n",
    "If modifying model constants prior to simulation is only required it is recommended to use the previous method as opposed to 'replacing' the model component with a function."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 6. Working with Subscripts"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Subscripting is a key feature in Vensim for replicating model structure for up to 8 dimensions. The VenPy allows for interacting with *fully* subscripted variables in the same way that we've shown for non-subscripted variables. However, by using VenPy we can also deal with *subscript ranges*. This allows us to interact with subscripted variables with `numpy` arrays."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As an example, let's say we have the same system as before, but now we have 9 stocks which are categorized by their type [A,B,C] and flow structure [D, E, F] as in the `sub_simple.mdl` in the `examples` directory. We follow the same steps as before to obtain a published Vensim model `sub_simple.vpm`. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "model = venpy.load(\"../models/sub_simple.vpm\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can choose to set individual elements of a constant prior to simulation just as before, by using the *fully* subscripted variable name as follows,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "model['Characteristic Time[A,D]'] = 10"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "But using VenPy we can also set subscript ranges by passing a numpy array of the same shape as the subscript range to be set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "model['Characteristic Time[type,D]'] = np.array([10, 15, 20])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "When can use any mix of subscript ranges and subscript elements as long as they are in the correct order and there are no naming overlaps between elements of different ranges."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Entire array \n",
      " [[ 10.   3.   4.]\n",
      " [ 15.   6.   7.]\n",
      " [ 20.   9.  10.]]\n",
      "Slice \n",
      " [ 10.   3.   4.]\n"
     ]
    }
   ],
   "source": [
    "print(\"Entire array \\n\", model['Characteristic Time[type, structure]'])\n",
    "print (\"Slice \\n\", model['Characteristic Time[A, structure]'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This basic concept applies to setting model components as before as long as an array of the correct shape will be set to the target model variable from the Python function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def outflow():\n",
    "    return model['Stock[type, structure]'] / model['Characteristic Time[type, structure]']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "model['Outflow[type, structure]'] = outflow"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false,
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "model.run()\n",
    "result = model.result()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can easily view and manipulate the resulting data in the form of a `DataFrame`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x70e29b0>"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x70e2430>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "result.filter(regex='Stock').plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Outflow[A,D]</th>\n",
       "      <th>Outflow[A,E]</th>\n",
       "      <th>Outflow[A,F]</th>\n",
       "      <th>Outflow[B,D]</th>\n",
       "      <th>Outflow[B,E]</th>\n",
       "      <th>Outflow[B,F]</th>\n",
       "      <th>Outflow[C,D]</th>\n",
       "      <th>Outflow[C,E]</th>\n",
       "      <th>Outflow[C,F]</th>\n",
       "      <th>SAVEPER</th>\n",
       "      <th>Stock[A,D]</th>\n",
       "      <th>Stock[A,E]</th>\n",
       "      <th>Stock[A,F]</th>\n",
       "      <th>Stock[B,D]</th>\n",
       "      <th>Stock[B,E]</th>\n",
       "      <th>Stock[B,F]</th>\n",
       "      <th>Stock[C,D]</th>\n",
       "      <th>Stock[C,E]</th>\n",
       "      <th>Stock[C,F]</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>6.666667</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>1.333333</td>\n",
       "      <td>3.333333</td>\n",
       "      <td>2.857143</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.222222</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>20.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.800000</td>\n",
       "      <td>4.444445</td>\n",
       "      <td>3.750000</td>\n",
       "      <td>1.244444</td>\n",
       "      <td>2.777778</td>\n",
       "      <td>2.448980</td>\n",
       "      <td>0.950000</td>\n",
       "      <td>1.975309</td>\n",
       "      <td>1.800000</td>\n",
       "      <td>1</td>\n",
       "      <td>18.000000</td>\n",
       "      <td>13.333334</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>18.666666</td>\n",
       "      <td>16.666666</td>\n",
       "      <td>17.142857</td>\n",
       "      <td>19.000000</td>\n",
       "      <td>17.777779</td>\n",
       "      <td>18.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.620000</td>\n",
       "      <td>2.962963</td>\n",
       "      <td>2.812500</td>\n",
       "      <td>1.161481</td>\n",
       "      <td>2.314815</td>\n",
       "      <td>2.099125</td>\n",
       "      <td>0.902500</td>\n",
       "      <td>1.755830</td>\n",
       "      <td>1.620000</td>\n",
       "      <td>1</td>\n",
       "      <td>16.200001</td>\n",
       "      <td>8.888889</td>\n",
       "      <td>11.250000</td>\n",
       "      <td>17.422222</td>\n",
       "      <td>13.888888</td>\n",
       "      <td>14.693877</td>\n",
       "      <td>18.049999</td>\n",
       "      <td>15.802470</td>\n",
       "      <td>16.200001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.458000</td>\n",
       "      <td>1.975309</td>\n",
       "      <td>2.109375</td>\n",
       "      <td>1.084049</td>\n",
       "      <td>1.929012</td>\n",
       "      <td>1.799250</td>\n",
       "      <td>0.857375</td>\n",
       "      <td>1.560738</td>\n",
       "      <td>1.458000</td>\n",
       "      <td>1</td>\n",
       "      <td>14.580001</td>\n",
       "      <td>5.925926</td>\n",
       "      <td>8.437500</td>\n",
       "      <td>16.260740</td>\n",
       "      <td>11.574074</td>\n",
       "      <td>12.594751</td>\n",
       "      <td>17.147499</td>\n",
       "      <td>14.046640</td>\n",
       "      <td>14.580001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.312200</td>\n",
       "      <td>1.316872</td>\n",
       "      <td>1.582031</td>\n",
       "      <td>1.011779</td>\n",
       "      <td>1.607510</td>\n",
       "      <td>1.542214</td>\n",
       "      <td>0.814506</td>\n",
       "      <td>1.387323</td>\n",
       "      <td>1.312200</td>\n",
       "      <td>1</td>\n",
       "      <td>13.122001</td>\n",
       "      <td>3.950617</td>\n",
       "      <td>6.328125</td>\n",
       "      <td>15.176691</td>\n",
       "      <td>9.645061</td>\n",
       "      <td>10.795501</td>\n",
       "      <td>16.290125</td>\n",
       "      <td>12.485903</td>\n",
       "      <td>13.122001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1.180980</td>\n",
       "      <td>0.877915</td>\n",
       "      <td>1.186523</td>\n",
       "      <td>0.944327</td>\n",
       "      <td>1.339592</td>\n",
       "      <td>1.321898</td>\n",
       "      <td>0.773781</td>\n",
       "      <td>1.233176</td>\n",
       "      <td>1.180980</td>\n",
       "      <td>1</td>\n",
       "      <td>11.809801</td>\n",
       "      <td>2.633745</td>\n",
       "      <td>4.746094</td>\n",
       "      <td>14.164911</td>\n",
       "      <td>8.037551</td>\n",
       "      <td>9.253286</td>\n",
       "      <td>15.475618</td>\n",
       "      <td>11.098580</td>\n",
       "      <td>11.809801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1.062882</td>\n",
       "      <td>0.585277</td>\n",
       "      <td>0.889893</td>\n",
       "      <td>0.881372</td>\n",
       "      <td>1.116326</td>\n",
       "      <td>1.133055</td>\n",
       "      <td>0.735092</td>\n",
       "      <td>1.096156</td>\n",
       "      <td>1.062882</td>\n",
       "      <td>1</td>\n",
       "      <td>10.628821</td>\n",
       "      <td>1.755830</td>\n",
       "      <td>3.559570</td>\n",
       "      <td>13.220584</td>\n",
       "      <td>6.697959</td>\n",
       "      <td>7.931388</td>\n",
       "      <td>14.701838</td>\n",
       "      <td>9.865405</td>\n",
       "      <td>10.628821</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.956594</td>\n",
       "      <td>0.390184</td>\n",
       "      <td>0.667419</td>\n",
       "      <td>0.822614</td>\n",
       "      <td>0.930272</td>\n",
       "      <td>0.971190</td>\n",
       "      <td>0.698337</td>\n",
       "      <td>0.974361</td>\n",
       "      <td>0.956594</td>\n",
       "      <td>1</td>\n",
       "      <td>9.565939</td>\n",
       "      <td>1.170553</td>\n",
       "      <td>2.669678</td>\n",
       "      <td>12.339211</td>\n",
       "      <td>5.581633</td>\n",
       "      <td>6.798333</td>\n",
       "      <td>13.966745</td>\n",
       "      <td>8.769249</td>\n",
       "      <td>9.565939</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0.860935</td>\n",
       "      <td>0.260123</td>\n",
       "      <td>0.500565</td>\n",
       "      <td>0.767773</td>\n",
       "      <td>0.775227</td>\n",
       "      <td>0.832449</td>\n",
       "      <td>0.663420</td>\n",
       "      <td>0.866099</td>\n",
       "      <td>0.860935</td>\n",
       "      <td>1</td>\n",
       "      <td>8.609345</td>\n",
       "      <td>0.780369</td>\n",
       "      <td>2.002258</td>\n",
       "      <td>11.516598</td>\n",
       "      <td>4.651361</td>\n",
       "      <td>5.827143</td>\n",
       "      <td>13.268408</td>\n",
       "      <td>7.794888</td>\n",
       "      <td>8.609345</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0.774841</td>\n",
       "      <td>0.173415</td>\n",
       "      <td>0.375423</td>\n",
       "      <td>0.716588</td>\n",
       "      <td>0.646022</td>\n",
       "      <td>0.713528</td>\n",
       "      <td>0.630249</td>\n",
       "      <td>0.769865</td>\n",
       "      <td>0.774841</td>\n",
       "      <td>1</td>\n",
       "      <td>7.748411</td>\n",
       "      <td>0.520246</td>\n",
       "      <td>1.501694</td>\n",
       "      <td>10.748824</td>\n",
       "      <td>3.876134</td>\n",
       "      <td>4.994694</td>\n",
       "      <td>12.604987</td>\n",
       "      <td>6.928789</td>\n",
       "      <td>7.748411</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>0.774841</td>\n",
       "      <td>0.173415</td>\n",
       "      <td>0.375423</td>\n",
       "      <td>0.716588</td>\n",
       "      <td>0.646022</td>\n",
       "      <td>0.713528</td>\n",
       "      <td>0.630249</td>\n",
       "      <td>0.769865</td>\n",
       "      <td>0.774841</td>\n",
       "      <td>1</td>\n",
       "      <td>6.973570</td>\n",
       "      <td>0.346831</td>\n",
       "      <td>1.126270</td>\n",
       "      <td>10.032236</td>\n",
       "      <td>3.230111</td>\n",
       "      <td>4.281166</td>\n",
       "      <td>11.974738</td>\n",
       "      <td>6.158924</td>\n",
       "      <td>6.973570</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Outflow[A,D]  Outflow[A,E]  Outflow[A,F]  Outflow[B,D]  Outflow[B,E]  \\\n",
       "0       2.000000      6.666667      5.000000      1.333333      3.333333   \n",
       "1       1.800000      4.444445      3.750000      1.244444      2.777778   \n",
       "2       1.620000      2.962963      2.812500      1.161481      2.314815   \n",
       "3       1.458000      1.975309      2.109375      1.084049      1.929012   \n",
       "4       1.312200      1.316872      1.582031      1.011779      1.607510   \n",
       "5       1.180980      0.877915      1.186523      0.944327      1.339592   \n",
       "6       1.062882      0.585277      0.889893      0.881372      1.116326   \n",
       "7       0.956594      0.390184      0.667419      0.822614      0.930272   \n",
       "8       0.860935      0.260123      0.500565      0.767773      0.775227   \n",
       "9       0.774841      0.173415      0.375423      0.716588      0.646022   \n",
       "10      0.774841      0.173415      0.375423      0.716588      0.646022   \n",
       "\n",
       "    Outflow[B,F]  Outflow[C,D]  Outflow[C,E]  Outflow[C,F]  SAVEPER  \\\n",
       "0       2.857143      1.000000      2.222222      2.000000        1   \n",
       "1       2.448980      0.950000      1.975309      1.800000        1   \n",
       "2       2.099125      0.902500      1.755830      1.620000        1   \n",
       "3       1.799250      0.857375      1.560738      1.458000        1   \n",
       "4       1.542214      0.814506      1.387323      1.312200        1   \n",
       "5       1.321898      0.773781      1.233176      1.180980        1   \n",
       "6       1.133055      0.735092      1.096156      1.062882        1   \n",
       "7       0.971190      0.698337      0.974361      0.956594        1   \n",
       "8       0.832449      0.663420      0.866099      0.860935        1   \n",
       "9       0.713528      0.630249      0.769865      0.774841        1   \n",
       "10      0.713528      0.630249      0.769865      0.774841        1   \n",
       "\n",
       "    Stock[A,D]  Stock[A,E]  Stock[A,F]  Stock[B,D]  Stock[B,E]  Stock[B,F]  \\\n",
       "0    20.000000   20.000000   20.000000   20.000000   20.000000   20.000000   \n",
       "1    18.000000   13.333334   15.000000   18.666666   16.666666   17.142857   \n",
       "2    16.200001    8.888889   11.250000   17.422222   13.888888   14.693877   \n",
       "3    14.580001    5.925926    8.437500   16.260740   11.574074   12.594751   \n",
       "4    13.122001    3.950617    6.328125   15.176691    9.645061   10.795501   \n",
       "5    11.809801    2.633745    4.746094   14.164911    8.037551    9.253286   \n",
       "6    10.628821    1.755830    3.559570   13.220584    6.697959    7.931388   \n",
       "7     9.565939    1.170553    2.669678   12.339211    5.581633    6.798333   \n",
       "8     8.609345    0.780369    2.002258   11.516598    4.651361    5.827143   \n",
       "9     7.748411    0.520246    1.501694   10.748824    3.876134    4.994694   \n",
       "10    6.973570    0.346831    1.126270   10.032236    3.230111    4.281166   \n",
       "\n",
       "    Stock[C,D]  Stock[C,E]  Stock[C,F]  \n",
       "0    20.000000   20.000000   20.000000  \n",
       "1    19.000000   17.777779   18.000000  \n",
       "2    18.049999   15.802470   16.200001  \n",
       "3    17.147499   14.046640   14.580001  \n",
       "4    16.290125   12.485903   13.122001  \n",
       "5    15.475618   11.098580   11.809801  \n",
       "6    14.701838    9.865405   10.628821  \n",
       "7    13.966745    8.769249    9.565939  \n",
       "8    13.268408    7.794888    8.609345  \n",
       "9    12.604987    6.928789    7.748411  \n",
       "10   11.974738    6.158924    6.973570  "
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
